<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------
// | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------

namespace app\admin\controller;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\admin\model\ValidationScene as ValidationSceneModel;
use think\Db;

/**
 * 验证场景管理控制器
 * @package app\admin\controller
 */
class ValidationScene extends Admin
{
    /**
     * 验证场景列表
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function index()
    {
       // 查询
        $map = $this->getMap();
        $map['isdel']=0;
        $pagetitle="验证场景列表";
        
        // 排序
        $order = $this->getOrder('sort desc, id asc');
        // 数据列表
        $data_list = ValidationSceneModel::getAll($map, $order);
        // 分页数据
        $page = $data_list->render();

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle($pagetitle) // 设置页面标题
            ->setTableName('validation_scene')
            ->setPrimaryKey("id")
            ->setSearch(['scenename' => '验证场景名称']) // 设置搜索框
            ->addTimeFilter('create_time')
            ->addTopButton('add') // 添加顶部按钮
            ->addTopButton('enable') // 添加顶部按钮
            ->addTopButton('disable') // 添加顶部按钮
            ->addColumns([ // 批量添加数据列
                ['id', '编号'],
                ['scenename', '验证场景名称', 'text.edit'],
                ['scenecode', '验证场景代码', 'text.edit'],
                ['sort', '排序', 'text.edit'],
                ['status', '状态', 'switch'],
                ['create_time', '添加时间'],
                ['right_button', '操作', 'btn']
            ])
            ->addOrder(['sort', 'id'])
            ->addRightButton('edit', ['class'=>'btn btn-xs btn-default','icon' => 'fa fa-pencil', 'scenename' => '编辑', 'href' => url('edit', ['id' => '__id__'])])
            ->addRightButton('delete',['class'=>'btn btn-xs btn-default','icon' => 'fa fa-times', 'scenename' => '删除', 'href' => url('delete', ['id' => '__id__'])])
            ->setRowList($data_list) // 设置表格数据
            ->setPages($page) // 设置分页数据
            ->fetch(); // 渲染模板
    }

    /**
     * 编辑验证场景
     * @param null $id 验证场景id
     * @author 陈梦晨 <2391157750@qq.com>
     */
    public function edit($id = null)
    {
        if ($id === null) return $this->error('缺少参数');
        $info = ValidationSceneModel::find(['id' => $id]);

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('编辑') // 设置页面标题
            ->setUrl(url('dosave'))
            ->addFormItems([ // 批量添加表单项
                 ['hidden', 'id'],
                 ['text', 'scenename', '验证场景名称'],
                 ['text', 'scenecode', '验证场景代码'],
                 ['radio', 'status', '状态', '', ['禁用', '启用']],
                 ['text', 'sort', '排序'],
            ])
            ->setFormData($info) // 设置表单数据
            ->layout(['scenename'=>3,'scenecode'=>3,'sort'=>3])
            ->fetch();
            
    }
    public function dosave(){
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            
            // 验证
            $result = $this->validate($data, 'ValidationScene');
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);

            if ($menu = ValidationSceneModel::update($data)) {
                return $this->success('修改成功', url('index'));
            } else {
                return $this->error('修改失败');
            }
        }
    }
    /**
     * 新增验证场景
     * @author 陈梦晨 <2391157750@qq.com>
     */

    public function add(){
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('新增') // 设置页面标题
            ->setUrl(url('doadd'))
            ->addFormItems([ // 批量添加表单项
                 ['text', 'scenename', '验证场景名称'],
                 ['text', 'scenecode', '验证场景代码'],
                 ['radio', 'status', '状态', '', ['禁用', '启用'],1],
                 ['text', 'sort', '排序'],
            ])
            ->layout(['scenename'=>3,'scenecode'=>3,'sort'=>3])
            ->fetch();
    }
    public function doadd(){
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            
            // 验证
            $result = $this->validate($data, 'ValidationScene');
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);

            if ($menu = ValidationSceneModel::create($data)) {
                return $this->success('新增成功', url('index'));
            } else {
                return $this->error('新增失败');
            }
        }

    }

    /**
     * 删除验证场景
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function delete($record = [])
    {
        $id = $this->request->param('id');
        // 删除节点
        if (ValidationSceneModel::del($id)) {
            return $this->success('删除成功');
        } else {
            return $this->error('删除失败');
        }
    }

    /**
     * 设置状态
     * @param string $type 状态类型:enable/disable
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function setstatus($type = '', $record = [])
    {
        $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        if (empty($ids)) return $this->error('缺少主键');

        if(ValidationSceneModel::$type($ids)){
            return $this->success('操作成功');
        }else{
            return $this->error('操作失败');
        }
            
    }

    /**
     * 禁用
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function disable($record = [])
    {
        return $this->setstatus('disable');
    }

    /**
     * 启用
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function enable($record = [])
    {
        return $this->setstatus('enable');
    }
    
}